package ice.dao.util;

import java.util.Date;
import java.util.HashMap;
import java.util.Map;

import cube.utils.TimeUtil;

/**
 * @描述：查询数据
 * @作者：abiao
 */
public class TableRow {

    /**
     * 数据存储
     */
    private Map<String, Object> dataMap = new HashMap<String, Object>();

    /**
     * 数据存入
     */
    public void put(String columnName, Object value) {
        dataMap.put(columnName, value);
    }

    /**
     * 数据条数
     */
    public int size() {
        return dataMap.size();
    }

    /**
     * 获取查询数据
     */
    public Object get(String columnName) {
        return dataMap.get(columnName);
    }

    /**
     * 获取相应类型数据
     */
    public String getString(String columnName) {
        return (String) get(columnName);
    }

    /**
     * 获取相应类型数据
     */
    public String getString(String columnName, String defaultValue) {
        return (String) autoGet(columnName, defaultValue);
    }

    /**
     * 获取相应类型数据
     */
    public int getInt(String columnName) {
        return (Integer) get(columnName);
    }

    /**
     * 获取相应类型数据
     */
    public int getInt(String columnName, int defaultValue) {
        return (Integer) autoGet(columnName, defaultValue);
    }

    /**
     * 获取相应类型数据
     */
    public byte[] getBlob(String columnName) {
        return (byte[]) get(columnName);
    }

    /**
     * 获取相应类型数据
     */
    public long getLong(String columnName) {
        return (Long) get(columnName);
    }

    /**
     * 获取相应类型数据
     */
    public long getLong(String columnName, long defaultValue) {
        return (Long) autoGet(columnName, defaultValue);
    }

    /**
     * 获取相应类型数据
     */
    public Date getDate(String columnName) {
        String sqlTime = getString(columnName);
        if (sqlTime == null) {
            return null;
        }
        return TimeUtil.getSQLDate(sqlTime);
    }

    /**
     * 自动适配结果
     */
    private Object autoGet(String columnName, Object defaultValue) {
        Object result = get(columnName);
        return result != null ? result : defaultValue;
    }
}
